# -*- coding:utf-8 -*-
# @File       :   切木材.py
# @Author     :   LINING
# @Time       :   2024/3/11 15:42
# @Description :
"""
木材厂有 n 根原木，现在想把这些木头切割成 k 段长度均为 l ll 的小段木头（木头有可能有剩余）。
当然，我们希望得到的小段木头越长越好，请求出 l ll 的最大值。
木头长度的单位是 cm，原木的长度都是正整数，我们要求切割得到的小段木头的长度也是正整数。
例如有两根原木长度分别为 11 和 21，要求切割成等长的 6 段，很明显能切割出来的小段木头长度最长为 5。
【输入格式】：
第一行是两个正整数 n,k，分别表示原木的数量，需要得到的小段的数量。
接下来 n 行，每行一个正整数 Li表示一根原木的长度。
【输出格式】：
仅一行，即 l ll 的最大值。
如果连 1cm 长的小段都切不出来，输出 0。
【输入样例#1】：
3（根数） 7(小段数量)
232
124
456

【输出样例#1】：
114
"""
height = [232,124,456]
boxs = 7


def get_box(size, nums):
    """
    size: 最大长度
    nums: 整根长度
    """
    box_size = 0
    for i in nums:
        try:
            cut_nums = int(i/size)
        except Exception:
            cut_nums = 0
        box_size = box_size+cut_nums
    return box_size


def get_min(height, box):
    left = 0
    right = max(height)
    while left < right:
        mid = int((left+right+1)/2)
        if get_box(mid, height) < box:
            right = mid-1
        else:
            left = mid
    return right


print(get_min(height, boxs))